home *** CD-ROM | disk | FTP | other *** search
/ Apple Developer Connection 1998 Fall: Game Toolkit / Disc.iso / SDKs / QuickTime Mac / AIncludes / QD3DIO.a < prev    next >
Encoding:
Text File  |  1998-04-09  |  29.5 KB  |  1,086 lines  |  [TEXT/MPS ]

  1. ;
  2. ;    File:        QD3DIO.a
  3. ;
  4. ;    Contains:    QuickDraw 3D IO API                                                
  5. ;
  6. ;    Version:    Technology:    Quickdraw 3D 1.5.4
  7. ;                Release:    QuickTime 3.0
  8. ;
  9. ;    Copyright:    © 1995-1998 by Apple Computer, Inc., all rights reserved.
  10. ;
  11. ;    Bugs?:        Please include the the file and version information (from above) with
  12. ;                the problem description.  Developers belonging to one of the Apple
  13. ;                developer programs can submit bug reports to:
  14. ;
  15. ;                    devsupport@apple.com
  16. ;
  17. ;
  18.     IF &TYPE('__QD3DIO__') = 'UNDEFINED' THEN
  19. __QD3DIO__ SET 1
  20.  
  21.     IF &TYPE('__QD3D__') = 'UNDEFINED' THEN
  22.     include 'QD3D.a'
  23.     ENDIF
  24.  
  25.     IF &TYPE('__QD3DDRAWCONTEXT__') = 'UNDEFINED' THEN
  26.     include 'QD3DDrawContext.a'
  27.     ENDIF
  28.     IF &TYPE('__QD3DVIEW__') = 'UNDEFINED' THEN
  29.     include 'QD3DView.a'
  30.     ENDIF
  31.  
  32. ; ******************************************************************************
  33. ; **                                                                              **
  34. ; **                                    Basic Types                                 **                                                    
  35. ; **                                                                              **
  36. ; ****************************************************************************
  37.  
  38. ; typedef unsigned char                 TQ3Uns8
  39.  
  40. ; typedef signed char                     TQ3Int8
  41.  
  42. ; typedef unsigned short                 TQ3Uns16
  43.  
  44. ; typedef signed short                     TQ3Int16
  45.  
  46. ; typedef unsigned long                 TQ3Uns32
  47.  
  48. ; typedef signed long                     TQ3Int32
  49.  
  50.     IF TARGET_RT_BIG_ENDIAN THEN
  51. TQ3Uns64                RECORD 0
  52. hi                         ds.l    1                ; offset: $0 (0)
  53. lo                         ds.l    1                ; offset: $4 (4)
  54. sizeof                     EQU *                    ; size:   $8 (8)
  55.                         ENDR
  56. TQ3Int64                RECORD 0
  57. hi                         ds.l    1                ; offset: $0 (0)
  58. lo                         ds.l    1                ; offset: $4 (4)
  59. sizeof                     EQU *                    ; size:   $8 (8)
  60.                         ENDR
  61.     ELSE
  62. TQ3Uns64                RECORD 0
  63. lo                         ds.l    1                ; offset: $0 (0)
  64. hi                         ds.l    1                ; offset: $4 (4)
  65. sizeof                     EQU *                    ; size:   $8 (8)
  66.                         ENDR
  67. TQ3Int64                RECORD 0
  68. lo                         ds.l    1                ; offset: $0 (0)
  69. hi                         ds.l    1                ; offset: $4 (4)
  70. sizeof                     EQU *                    ; size:   $8 (8)
  71.                         ENDR
  72.     ENDIF    ; TARGET_RT_BIG_ENDIAN
  73. ; typedef float                         TQ3Float32
  74.  
  75. ; typedef double                         TQ3Float64
  76.  
  77. ; typedef TQ3Uns32                         TQ3Size
  78.  
  79. ; ******************************************************************************
  80. ; **                                                                              **
  81. ; **                                    File Types                                 **
  82. ; **                                                                              **
  83. ; ****************************************************************************
  84.  
  85.  
  86. ; typedef long                            TQ3FileModeMasks
  87. kQ3FileModeNormal                EQU        0
  88. kQ3FileModeStream                EQU        $01
  89. kQ3FileModeDatabase                EQU        $02
  90. kQ3FileModeText                    EQU        $04
  91. ; typedef unsigned long                 TQ3FileMode
  92.  
  93. ; ******************************************************************************
  94. ; **                                                                              **
  95. ; **                                    Method Types                             **
  96. ; **                                                                              **
  97. ; ****************************************************************************
  98.  
  99. ; *    IO Methods
  100. ; *
  101. ; *    The IO system treats all objects as groups of typed information.
  102. ; *    When you register your element or attribute, the "elementType" is the 
  103. ; *    binary type of your object, the "elementName" the ascii type.
  104. ; *    
  105. ; *    All objects in the metafile are made up of a "root" or parent object which
  106. ; *    defines the instantiated object type. You may define the format of your 
  107. ; *    data any way you wish as long as you use the primitives types above and the
  108. ; *    routines below.
  109. ; *
  110. ; *    Root Objects are often appended with additional child objects, called 
  111. ; *    subobjects. You may append your object with other QuickDraw 3D objects.
  112. ; *    
  113. ; *    Writing is straightforward: an object traverses itself any other objects 
  114. ; *    that make it up, then writes its own data. Writing uses two methods: 
  115. ; *    TQ3XObjectTraverseMethod and TQ3XObjectWriteMethod.
  116. ; *
  117. ; *    The TQ3XObjectTraverseMethod method should:
  118. ; *    + First, Determine if the data should be written 
  119. ; *        - if you don't want to write out your object after examining your
  120. ; *            data, return kQ3Success in your Traverse method without calling
  121. ; *            any other submit calls.
  122. ; *     + Next, calculate the size of your object on disk
  123. ; *     + Gather whatever state from the view you need to preserve
  124. ; *         - you may access the view state NOW, as the state of the
  125. ; *             view duing your TQ3XObjectWriteMethod will not be valid. You may
  126. ; *             pass a temporary buffer to your write method.
  127. ; *     + Submit your view write data using Q3View_SubmitWriteData
  128. ; *         - note that you MUST call this before any other "_Submit" call.
  129. ; *         - you may pass in a "deleteMethod" for your data. This method
  130. ; *             will be called whether or not your write method succeeds or fails.
  131. ; *     + Submit your subobjects to the view
  132. ; *     
  133. ; *     The TQ3XObjectWriteMethod method should:
  134. ; *     + Write your data format to the file using the primitives routines below.
  135. ; *         - If you passed a "deleteMethod" in your Q3View_SubmitWriteData, that
  136. ; *             method will be called upon exit of your write method.
  137. ; *
  138. ; *    Reading is less straightforward because your root object and
  139. ; *    any subobjects must be read inside of your TQ3XObjectReadDataMethod. There 
  140. ; *    is an implicit state contained in the file while reading, which you must 
  141. ; *    be aware of. When you first enter the read method, you must physically 
  142. ; *    read in your data format using the primitives routines until
  143. ; *    
  144. ; *    Q3File_IsEndOfData(file) == kQ3True
  145. ; *    
  146. ; *    Generally, your data format should be self-descriptive such that you do not
  147. ; *    need to call Q3File_IsEndOfData to determine if you are done reading. 
  148. ; *    However, this call is useful for determining zero-sized object or 
  149. ; *    determining the end of an object's data.
  150. ; *    
  151. ; *    Once you have read in all the data, you may collect subobjects. A metafile
  152. ; *    object ONLY has subobjects if it is in a container. The call
  153. ; *    
  154. ; *    Q3File_IsEndOfContainer(file)
  155. ; *    
  156. ; *    returns kQ3False if subobjects exist, and kQ3True if subobjects do not 
  157. ; *    exist.
  158. ; *    
  159. ; *    At this point, you may use
  160. ; *    
  161. ; *    Q3File_GetNextObjectType
  162. ; *    Q3File_IsNextObjectOfType
  163. ; *    Q3File_ReadObject
  164. ; *    Q3File_SkipObject
  165. ; *    
  166. ; *    to iterate through the subobjects until Q3File_IsEndOfContainer(file) 
  167. ; *    is kQ3True.
  168. ; * 
  169.  
  170.  
  171. ; * IO Methods
  172.  
  173.  
  174. kQ3XMethodTypeObjectFileVersion    EQU        'vers'                ; version 
  175. kQ3XMethodTypeObjectTraverse    EQU        'trvs'                ; byte count 
  176. kQ3XMethodTypeObjectTraverseData EQU    'trvd'                ; byte count 
  177. kQ3XMethodTypeObjectWrite        EQU        'writ'                ; Dump info to file 
  178. kQ3XMethodTypeObjectReadData    EQU        'rddt'                ; Read info from file into buffer or, attach read data to parent 
  179. kQ3XMethodTypeObjectRead        EQU        'read'
  180. kQ3XMethodTypeObjectAttach        EQU        'attc'
  181. ; *    TQ3XObjectTraverseMethod
  182. ; *
  183. ; *    For "elements" (meaning "attributes, too), you will be passed NULL for 
  184. ; *    object. Sorry, custom objects will be available in the next major revision.
  185. ; *
  186. ; *    The "data" is a pointer to your internal element data.
  187. ; *
  188. ; *    The view is the current traversal view.
  189.  
  190. ; *  TQ3XObjectTraverseDataMethod
  191.  
  192. ; *  TQ3XObjectWriteMethod
  193.  
  194. ; *  Custom object writing 
  195.  
  196. ;
  197. ; extern TQ3Status Q3XView_SubmitWriteData(TQ3ViewObject view, TQ3Size size, void *data, TQ3XDataDeleteMethod deleteData)
  198. ;
  199.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  200.         IMPORT_CFM_FUNCTION Q3XView_SubmitWriteData
  201.     ENDIF
  202.  
  203. ;
  204. ; extern TQ3Status Q3XView_SubmitSubObjectData(TQ3ViewObject view, TQ3XObjectClass objectClass, unsigned long size, void *data, TQ3XDataDeleteMethod deleteData)
  205. ;
  206.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  207.         IMPORT_CFM_FUNCTION Q3XView_SubmitSubObjectData
  208.     ENDIF
  209.  
  210. ; *  TQ3XObjectReadMethod
  211.  
  212. ; *    TQ3XObjectReadDataMethod
  213. ; *
  214. ; *  For "elements" (meaning "attributes", too), you must allocate stack space 
  215. ; *    and call Q3Set_Add on "parentObject", which is an TQ3SetObject.
  216. ; *
  217. ; *    Otherwise, parentObject is whatever object your element is a subobject of...
  218.  
  219. ; *  TQ3XObjectAttachMethod
  220.  
  221.  
  222.  
  223. ; ******************************************************************************
  224. ; **                                                                              **
  225. ; **                                Versioning                                     **
  226. ; **                                                                              **
  227. ; ****************************************************************************
  228.  
  229. ; typedef unsigned long                 TQ3FileVersion
  230.  
  231.  
  232. ; ******************************************************************************
  233. ; **                                                                              **
  234. ; **                                File Routines                                 **
  235. ; **                                                                              **
  236. ; ****************************************************************************
  237.  
  238. ; * Creation and accessors
  239.  
  240. ;
  241. ; extern TQ3FileObject Q3File_New(void )
  242. ;
  243.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  244.         IMPORT_CFM_FUNCTION Q3File_New
  245.     ENDIF
  246.  
  247. ;
  248. ; extern TQ3Status Q3File_GetStorage(TQ3FileObject theFile, TQ3StorageObject *storage)
  249. ;
  250.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  251.         IMPORT_CFM_FUNCTION Q3File_GetStorage
  252.     ENDIF
  253.  
  254. ;
  255. ; extern TQ3Status Q3File_SetStorage(TQ3FileObject theFile, TQ3StorageObject storage)
  256. ;
  257.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  258.         IMPORT_CFM_FUNCTION Q3File_SetStorage
  259.     ENDIF
  260.  
  261. ; * Opening, and accessing "open" state, closing/cancelling
  262.  
  263. ;
  264. ; extern TQ3Status Q3File_OpenRead(TQ3FileObject theFile, TQ3FileMode *mode)
  265. ;
  266.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  267.         IMPORT_CFM_FUNCTION Q3File_OpenRead
  268.     ENDIF
  269.  
  270. ;
  271. ; extern TQ3Status Q3File_OpenWrite(TQ3FileObject theFile, TQ3FileMode mode)
  272. ;
  273.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  274.         IMPORT_CFM_FUNCTION Q3File_OpenWrite
  275.     ENDIF
  276.  
  277. ;
  278. ; extern TQ3Status Q3File_IsOpen(TQ3FileObject theFile, TQ3Boolean *isOpen)
  279. ;
  280.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  281.         IMPORT_CFM_FUNCTION Q3File_IsOpen
  282.     ENDIF
  283.  
  284. ;
  285. ; extern TQ3Status Q3File_GetMode(TQ3FileObject theFile, TQ3FileMode *mode)
  286. ;
  287.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  288.         IMPORT_CFM_FUNCTION Q3File_GetMode
  289.     ENDIF
  290.  
  291. ;
  292. ; extern TQ3Status Q3File_GetVersion(TQ3FileObject theFile, TQ3FileVersion *version)
  293. ;
  294.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  295.         IMPORT_CFM_FUNCTION Q3File_GetVersion
  296.     ENDIF
  297.  
  298. ;
  299. ; extern TQ3Status Q3File_Close(TQ3FileObject theFile)
  300. ;
  301.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  302.         IMPORT_CFM_FUNCTION Q3File_Close
  303.     ENDIF
  304.  
  305. ;
  306. ; extern TQ3Status Q3File_Cancel(TQ3FileObject theFile)
  307. ;
  308.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  309.         IMPORT_CFM_FUNCTION Q3File_Cancel
  310.     ENDIF
  311.  
  312. ; * Writing (Application)
  313.  
  314. ;
  315. ; extern TQ3Status Q3View_StartWriting(TQ3ViewObject view, TQ3FileObject theFile)
  316. ;
  317.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  318.         IMPORT_CFM_FUNCTION Q3View_StartWriting
  319.     ENDIF
  320.  
  321. ;
  322. ; extern TQ3ViewStatus Q3View_EndWriting(TQ3ViewObject view)
  323. ;
  324.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  325.         IMPORT_CFM_FUNCTION Q3View_EndWriting
  326.     ENDIF
  327.  
  328. ; * Reading (Application)
  329.  
  330. ;
  331. ; extern TQ3ObjectType Q3File_GetNextObjectType(TQ3FileObject theFile)
  332. ;
  333.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  334.         IMPORT_CFM_FUNCTION Q3File_GetNextObjectType
  335.     ENDIF
  336.  
  337. ;
  338. ; extern TQ3Boolean Q3File_IsNextObjectOfType(TQ3FileObject theFile, TQ3ObjectType ofType)
  339. ;
  340.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  341.         IMPORT_CFM_FUNCTION Q3File_IsNextObjectOfType
  342.     ENDIF
  343.  
  344. ;
  345. ; extern TQ3Object Q3File_ReadObject(TQ3FileObject theFile)
  346. ;
  347.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  348.         IMPORT_CFM_FUNCTION Q3File_ReadObject
  349.     ENDIF
  350.  
  351. ;
  352. ; extern TQ3Status Q3File_SkipObject(TQ3FileObject theFile)
  353. ;
  354.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  355.         IMPORT_CFM_FUNCTION Q3File_SkipObject
  356.     ENDIF
  357.  
  358. ;
  359. ; extern TQ3Boolean Q3File_IsEndOfData(TQ3FileObject theFile)
  360. ;
  361.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  362.         IMPORT_CFM_FUNCTION Q3File_IsEndOfData
  363.     ENDIF
  364.  
  365. ;
  366. ; extern TQ3Boolean Q3File_IsEndOfContainer(TQ3FileObject theFile, TQ3Object rootObject)
  367. ;
  368.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  369.         IMPORT_CFM_FUNCTION Q3File_IsEndOfContainer
  370.     ENDIF
  371.  
  372. ;
  373. ; extern TQ3Boolean Q3File_IsEndOfFile(TQ3FileObject theFile)
  374. ;
  375.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  376.         IMPORT_CFM_FUNCTION Q3File_IsEndOfFile
  377.     ENDIF
  378.  
  379. ;     
  380. ; *  External file references
  381.  
  382. ;
  383. ; extern TQ3Status Q3File_MarkAsExternalReference(TQ3FileObject theFile, TQ3SharedObject sharedObject)
  384. ;
  385.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  386.         IMPORT_CFM_FUNCTION Q3File_MarkAsExternalReference
  387.     ENDIF
  388.  
  389. ;
  390. ; extern TQ3GroupObject Q3File_GetExternalReferences(TQ3FileObject theFile)
  391. ;
  392.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  393.         IMPORT_CFM_FUNCTION Q3File_GetExternalReferences
  394.     ENDIF
  395.  
  396. ;     
  397. ; *  Tracking editing in read-in objects with custom elements
  398.  
  399. ;
  400. ; extern TQ3Status Q3Shared_ClearEditTracking(TQ3SharedObject sharedObject)
  401. ;
  402.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  403.         IMPORT_CFM_FUNCTION Q3Shared_ClearEditTracking
  404.     ENDIF
  405.  
  406. ;
  407. ; extern TQ3Boolean Q3Shared_GetEditTrackingState(TQ3SharedObject sharedObject)
  408. ;
  409.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  410.         IMPORT_CFM_FUNCTION Q3Shared_GetEditTrackingState
  411.     ENDIF
  412.  
  413. ;     
  414. ; *  Reading objects inside a group one-by-one
  415.  
  416.  
  417. ; typedef long                            TQ3FileReadGroupStateMasks
  418. kQ3FileReadWholeGroup            EQU        0
  419. kQ3FileReadObjectsInGroup        EQU        $01
  420. kQ3FileCurrentlyInsideGroup        EQU        $02
  421. ; typedef unsigned long                 TQ3FileReadGroupState
  422.  
  423. ;
  424. ; extern TQ3Status Q3File_SetReadInGroup(TQ3FileObject theFile, TQ3FileReadGroupState readGroupState)
  425. ;
  426.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  427.         IMPORT_CFM_FUNCTION Q3File_SetReadInGroup
  428.     ENDIF
  429.  
  430. ;
  431. ; extern TQ3Status Q3File_GetReadInGroup(TQ3FileObject theFile, TQ3FileReadGroupState *readGroupState)
  432. ;
  433.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  434.         IMPORT_CFM_FUNCTION Q3File_GetReadInGroup
  435.     ENDIF
  436.  
  437.  
  438. ; * Idling
  439.  
  440. ;
  441. ; extern TQ3Status Q3File_SetIdleMethod(TQ3FileObject theFile, TQ3FileIdleMethod idle, const void *idleData)
  442. ;
  443.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  444.         IMPORT_CFM_FUNCTION Q3File_SetIdleMethod
  445.     ENDIF
  446.  
  447.  
  448. ; ******************************************************************************
  449. ; **                                                                              **
  450. ; **                                Primitives Routines                             **
  451. ; **                                                                              **
  452. ; ****************************************************************************
  453.  
  454. ;
  455. ; extern TQ3Status Q3NewLine_Write(TQ3FileObject theFile)
  456. ;
  457.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  458.         IMPORT_CFM_FUNCTION Q3NewLine_Write
  459.     ENDIF
  460.  
  461. ;
  462. ; extern TQ3Status Q3Uns8_Read(TQ3Uns8 *data, TQ3FileObject theFile)
  463. ;
  464.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  465.         IMPORT_CFM_FUNCTION Q3Uns8_Read
  466.     ENDIF
  467.  
  468. ;
  469. ; extern TQ3Status Q3Uns8_Write(TQ3Uns8 data, TQ3FileObject theFile)
  470. ;
  471.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  472.         IMPORT_CFM_FUNCTION Q3Uns8_Write
  473.     ENDIF
  474.  
  475. ;
  476. ; extern TQ3Status Q3Uns16_Read(TQ3Uns16 *data, TQ3FileObject theFile)
  477. ;
  478.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  479.         IMPORT_CFM_FUNCTION Q3Uns16_Read
  480.     ENDIF
  481.  
  482. ;
  483. ; extern TQ3Status Q3Uns16_Write(TQ3Uns16 data, TQ3FileObject theFile)
  484. ;
  485.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  486.         IMPORT_CFM_FUNCTION Q3Uns16_Write
  487.     ENDIF
  488.  
  489. ;
  490. ; extern TQ3Status Q3Uns32_Read(TQ3Uns32 *data, TQ3FileObject theFile)
  491. ;
  492.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  493.         IMPORT_CFM_FUNCTION Q3Uns32_Read
  494.     ENDIF
  495.  
  496. ;
  497. ; extern TQ3Status Q3Uns32_Write(TQ3Uns32 data, TQ3FileObject theFile)
  498. ;
  499.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  500.         IMPORT_CFM_FUNCTION Q3Uns32_Write
  501.     ENDIF
  502.  
  503. ;
  504. ; extern TQ3Status Q3Int8_Read(TQ3Int8 *data, TQ3FileObject theFile)
  505. ;
  506.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  507.         IMPORT_CFM_FUNCTION Q3Int8_Read
  508.     ENDIF
  509.  
  510. ;
  511. ; extern TQ3Status Q3Int8_Write(TQ3Int8 data, TQ3FileObject theFile)
  512. ;
  513.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  514.         IMPORT_CFM_FUNCTION Q3Int8_Write
  515.     ENDIF
  516.  
  517. ;
  518. ; extern TQ3Status Q3Int16_Read(TQ3Int16 *data, TQ3FileObject theFile)
  519. ;
  520.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  521.         IMPORT_CFM_FUNCTION Q3Int16_Read
  522.     ENDIF
  523.  
  524. ;
  525. ; extern TQ3Status Q3Int16_Write(TQ3Int16 data, TQ3FileObject theFile)
  526. ;
  527.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  528.         IMPORT_CFM_FUNCTION Q3Int16_Write
  529.     ENDIF
  530.  
  531. ;
  532. ; extern TQ3Status Q3Int32_Read(TQ3Int32 *data, TQ3FileObject theFile)
  533. ;
  534.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  535.         IMPORT_CFM_FUNCTION Q3Int32_Read
  536.     ENDIF
  537.  
  538. ;
  539. ; extern TQ3Status Q3Int32_Write(TQ3Int32 data, TQ3FileObject theFile)
  540. ;
  541.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  542.         IMPORT_CFM_FUNCTION Q3Int32_Write
  543.     ENDIF
  544.  
  545. ;
  546. ; extern TQ3Status Q3Uns64_Read(TQ3Uns64 *data, TQ3FileObject theFile)
  547. ;
  548.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  549.         IMPORT_CFM_FUNCTION Q3Uns64_Read
  550.     ENDIF
  551.  
  552. ;
  553. ; extern TQ3Status Q3Uns64_Write(TQ3Uns64 data, TQ3FileObject theFile)
  554. ;
  555.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  556.         IMPORT_CFM_FUNCTION Q3Uns64_Write
  557.     ENDIF
  558.  
  559. ;
  560. ; extern TQ3Status Q3Int64_Read(TQ3Int64 *data, TQ3FileObject theFile)
  561. ;
  562.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  563.         IMPORT_CFM_FUNCTION Q3Int64_Read
  564.     ENDIF
  565.  
  566. ;
  567. ; extern TQ3Status Q3Int64_Write(TQ3Int64 data, TQ3FileObject theFile)
  568. ;
  569.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  570.         IMPORT_CFM_FUNCTION Q3Int64_Write
  571.     ENDIF
  572.  
  573. ;
  574. ; extern TQ3Status Q3Float32_Read(TQ3Float32 *data, TQ3FileObject theFile)
  575. ;
  576.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  577.         IMPORT_CFM_FUNCTION Q3Float32_Read
  578.     ENDIF
  579.  
  580. ;
  581. ; extern TQ3Status Q3Float32_Write(TQ3Float32 data, TQ3FileObject theFile)
  582. ;
  583.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  584.         IMPORT_CFM_FUNCTION Q3Float32_Write
  585.     ENDIF
  586.  
  587. ;
  588. ; extern TQ3Status Q3Float64_Read(TQ3Float64 *data, TQ3FileObject theFile)
  589. ;
  590.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  591.         IMPORT_CFM_FUNCTION Q3Float64_Read
  592.     ENDIF
  593.  
  594. ;
  595. ; extern TQ3Status Q3Float64_Write(TQ3Float64 data, TQ3FileObject theFile)
  596. ;
  597.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  598.         IMPORT_CFM_FUNCTION Q3Float64_Write
  599.     ENDIF
  600.  
  601. ;
  602. ; extern TQ3Size Q3Size_Pad(TQ3Size size)
  603. ;
  604.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  605.         IMPORT_CFM_FUNCTION Q3Size_Pad
  606.     ENDIF
  607.  
  608. ; * Pass a pointer to a buffer of kQ3StringMaximumLength bytes
  609.  
  610. ;
  611. ; extern TQ3Status Q3String_Read(char *data, unsigned long *length, TQ3FileObject theFile)
  612. ;
  613.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  614.         IMPORT_CFM_FUNCTION Q3String_Read
  615.     ENDIF
  616.  
  617. ;
  618. ; extern TQ3Status Q3String_Write(const char *data, TQ3FileObject theFile)
  619. ;
  620.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  621.         IMPORT_CFM_FUNCTION Q3String_Write
  622.     ENDIF
  623.  
  624. ;  
  625. ; * This call will read Q3Size_Pad(size) bytes,
  626. ; *    but only place size bytes into data.
  627.  
  628. ;
  629. ; extern TQ3Status Q3RawData_Read(unsigned char *data, unsigned long size, TQ3FileObject theFile)
  630. ;
  631.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  632.         IMPORT_CFM_FUNCTION Q3RawData_Read
  633.     ENDIF
  634.  
  635. ;  
  636. ; * This call will write Q3Size_Pad(size) bytes,
  637. ; *    adding 0's to pad to the nearest 4 byte boundary.
  638.  
  639. ;
  640. ; extern TQ3Status Q3RawData_Write(const unsigned char *data, unsigned long size, TQ3FileObject theFile)
  641. ;
  642.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  643.         IMPORT_CFM_FUNCTION Q3RawData_Write
  644.     ENDIF
  645.  
  646. ; ******************************************************************************
  647. ; **                                                                              **
  648. ; **                        Convenient Primitives Routines                         **
  649. ; **                                                                              **
  650. ; ****************************************************************************
  651.  
  652. ;
  653. ; extern TQ3Status Q3Point2D_Read(TQ3Point2D *point2D, TQ3FileObject theFile)
  654. ;
  655.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  656.         IMPORT_CFM_FUNCTION Q3Point2D_Read
  657.     ENDIF
  658.  
  659. ;
  660. ; extern TQ3Status Q3Point2D_Write(const TQ3Point2D *point2D, TQ3FileObject theFile)
  661. ;
  662.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  663.         IMPORT_CFM_FUNCTION Q3Point2D_Write
  664.     ENDIF
  665.  
  666. ;
  667. ; extern TQ3Status Q3Point3D_Read(TQ3Point3D *point3D, TQ3FileObject theFile)
  668. ;
  669.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  670.         IMPORT_CFM_FUNCTION Q3Point3D_Read
  671.     ENDIF
  672.  
  673. ;
  674. ; extern TQ3Status Q3Point3D_Write(const TQ3Point3D *point3D, TQ3FileObject theFile)
  675. ;
  676.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  677.         IMPORT_CFM_FUNCTION Q3Point3D_Write
  678.     ENDIF
  679.  
  680. ;
  681. ; extern TQ3Status Q3RationalPoint3D_Read(TQ3RationalPoint3D *point3D, TQ3FileObject theFile)
  682. ;
  683.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  684.         IMPORT_CFM_FUNCTION Q3RationalPoint3D_Read
  685.     ENDIF
  686.  
  687. ;
  688. ; extern TQ3Status Q3RationalPoint3D_Write(const TQ3RationalPoint3D *point3D, TQ3FileObject theFile)
  689. ;
  690.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  691.         IMPORT_CFM_FUNCTION Q3RationalPoint3D_Write
  692.     ENDIF
  693.  
  694. ;
  695. ; extern TQ3Status Q3RationalPoint4D_Read(TQ3RationalPoint4D *point4D, TQ3FileObject theFile)
  696. ;
  697.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  698.         IMPORT_CFM_FUNCTION Q3RationalPoint4D_Read
  699.     ENDIF
  700.  
  701. ;
  702. ; extern TQ3Status Q3RationalPoint4D_Write(const TQ3RationalPoint4D *point4D, TQ3FileObject theFile)
  703. ;
  704.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  705.         IMPORT_CFM_FUNCTION Q3RationalPoint4D_Write
  706.     ENDIF
  707.  
  708. ;
  709. ; extern TQ3Status Q3Vector2D_Read(TQ3Vector2D *vector2D, TQ3FileObject theFile)
  710. ;
  711.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  712.         IMPORT_CFM_FUNCTION Q3Vector2D_Read
  713.     ENDIF
  714.  
  715. ;
  716. ; extern TQ3Status Q3Vector2D_Write(const TQ3Vector2D *vector2D, TQ3FileObject theFile)
  717. ;
  718.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  719.         IMPORT_CFM_FUNCTION Q3Vector2D_Write
  720.     ENDIF
  721.  
  722. ;
  723. ; extern TQ3Status Q3Vector3D_Read(TQ3Vector3D *vector3D, TQ3FileObject theFile)
  724. ;
  725.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  726.         IMPORT_CFM_FUNCTION Q3Vector3D_Read
  727.     ENDIF
  728.  
  729. ;
  730. ; extern TQ3Status Q3Vector3D_Write(const TQ3Vector3D *vector3D, TQ3FileObject theFile)
  731. ;
  732.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  733.         IMPORT_CFM_FUNCTION Q3Vector3D_Write
  734.     ENDIF
  735.  
  736. ;
  737. ; extern TQ3Status Q3Matrix4x4_Read(TQ3Matrix4x4 *matrix4x4, TQ3FileObject theFile)
  738. ;
  739.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  740.         IMPORT_CFM_FUNCTION Q3Matrix4x4_Read
  741.     ENDIF
  742.  
  743. ;
  744. ; extern TQ3Status Q3Matrix4x4_Write(const TQ3Matrix4x4 *matrix4x4, TQ3FileObject theFile)
  745. ;
  746.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  747.         IMPORT_CFM_FUNCTION Q3Matrix4x4_Write
  748.     ENDIF
  749.  
  750. ;
  751. ; extern TQ3Status Q3Tangent2D_Read(TQ3Tangent2D *tangent2D, TQ3FileObject theFile)
  752. ;
  753.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  754.         IMPORT_CFM_FUNCTION Q3Tangent2D_Read
  755.     ENDIF
  756.  
  757. ;
  758. ; extern TQ3Status Q3Tangent2D_Write(const TQ3Tangent2D *tangent2D, TQ3FileObject theFile)
  759. ;
  760.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  761.         IMPORT_CFM_FUNCTION Q3Tangent2D_Write
  762.     ENDIF
  763.  
  764. ;
  765. ; extern TQ3Status Q3Tangent3D_Read(TQ3Tangent3D *tangent3D, TQ3FileObject theFile)
  766. ;
  767.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  768.         IMPORT_CFM_FUNCTION Q3Tangent3D_Read
  769.     ENDIF
  770.  
  771. ;
  772. ; extern TQ3Status Q3Tangent3D_Write(const TQ3Tangent3D *tangent3D, TQ3FileObject theFile)
  773. ;
  774.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  775.         IMPORT_CFM_FUNCTION Q3Tangent3D_Write
  776.     ENDIF
  777.  
  778. ;     This call affects only text Files - it is a no-op in binary files 
  779. ;
  780. ; extern TQ3Status Q3Comment_Write(char *comment, TQ3FileObject theFile)
  781. ;
  782.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  783.         IMPORT_CFM_FUNCTION Q3Comment_Write
  784.     ENDIF
  785.  
  786. ; ******************************************************************************
  787. ; **                                                                              **
  788. ; **                                Unknown Object                                 **
  789. ; **                                                                              **
  790. ; **        Unknown objects are generated when reading files which contain         **
  791. ; **        custom data which has not been registered in the current             **
  792. ; **        instantiation of QuickDraw 3D.                                         **
  793. ; **                                                                              **
  794. ; ****************************************************************************
  795.  
  796. ;
  797. ; extern TQ3ObjectType Q3Unknown_GetType(TQ3UnknownObject unknownObject)
  798. ;
  799.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  800.         IMPORT_CFM_FUNCTION Q3Unknown_GetType
  801.     ENDIF
  802.  
  803. ;
  804. ; extern TQ3Status Q3Unknown_GetDirtyState(TQ3UnknownObject unknownObject, TQ3Boolean *isDirty)
  805. ;
  806.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  807.         IMPORT_CFM_FUNCTION Q3Unknown_GetDirtyState
  808.     ENDIF
  809.  
  810. ;
  811. ; extern TQ3Status Q3Unknown_SetDirtyState(TQ3UnknownObject unknownObject, TQ3Boolean isDirty)
  812. ;
  813.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  814.         IMPORT_CFM_FUNCTION Q3Unknown_SetDirtyState
  815.     ENDIF
  816.  
  817.  
  818. ; ******************************************************************************
  819. ; **                                                                              **
  820. ; **                            Unknown Text Routines                             **
  821. ; **                                                                              **
  822. ; ****************************************************************************
  823.  
  824. TQ3UnknownTextData        RECORD 0
  825. objectName                 ds.l    1                ; offset: $0 (0)        ;  '\0' terminated 
  826. contents                 ds.l    1                ; offset: $4 (4)        ;  '\0' terminated 
  827. sizeof                     EQU *                    ; size:   $8 (8)
  828.                         ENDR
  829. ;
  830. ; extern TQ3Status Q3UnknownText_GetData(TQ3UnknownObject unknownObject, TQ3UnknownTextData *unknownTextData)
  831. ;
  832.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  833.         IMPORT_CFM_FUNCTION Q3UnknownText_GetData
  834.     ENDIF
  835.  
  836. ;
  837. ; extern TQ3Status Q3UnknownText_EmptyData(TQ3UnknownTextData *unknownTextData)
  838. ;
  839.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  840.         IMPORT_CFM_FUNCTION Q3UnknownText_EmptyData
  841.     ENDIF
  842.  
  843.  
  844. ; ******************************************************************************
  845. ; **                                                                              **
  846. ; **                            Unknown Binary Routines                             **
  847. ; **                                                                              **
  848. ; ****************************************************************************
  849.  
  850. TQ3UnknownBinaryData    RECORD 0
  851. objectType                 ds.l    1                ; offset: $0 (0)
  852. size                     ds.l    1                ; offset: $4 (4)
  853. byteOrder                 ds.l    1                ; offset: $8 (8)
  854. contents                 ds.l    1                ; offset: $C (12)
  855. sizeof                     EQU *                    ; size:   $10 (16)
  856.                         ENDR
  857. ;
  858. ; extern TQ3Status Q3UnknownBinary_GetData(TQ3UnknownObject unknownObject, TQ3UnknownBinaryData *unknownBinaryData)
  859. ;
  860.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  861.         IMPORT_CFM_FUNCTION Q3UnknownBinary_GetData
  862.     ENDIF
  863.  
  864. ;
  865. ; extern TQ3Status Q3UnknownBinary_EmptyData(TQ3UnknownBinaryData *unknownBinaryData)
  866. ;
  867.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  868.         IMPORT_CFM_FUNCTION Q3UnknownBinary_EmptyData
  869.     ENDIF
  870.  
  871.  
  872. ;
  873. ; extern TQ3Status Q3UnknownBinary_GetTypeString(TQ3UnknownObject unknownObject, char **typeString)
  874. ;
  875.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  876.         IMPORT_CFM_FUNCTION Q3UnknownBinary_GetTypeString
  877.     ENDIF
  878.  
  879. ;
  880. ; extern TQ3Status Q3UnknownBinary_EmptyTypeString(char **typeString)
  881. ;
  882.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  883.         IMPORT_CFM_FUNCTION Q3UnknownBinary_EmptyTypeString
  884.     ENDIF
  885.  
  886. ; ******************************************************************************
  887. ; **                                                                              **
  888. ; **                            ViewHints routines                                 **
  889. ; **                                                                              **
  890. ; **        ViewHints are an object in a metafile to give you some hints on how     **
  891. ; **        to render a scene.    You may create a view with any of the objects     **
  892. ; **        retrieved from it, or you can just throw it away.                     **
  893. ; **                                                                              **
  894. ; **        To write a view hints to a file, create a view hints object from a     **
  895. ; **        view and write the view hints.                                         **
  896. ; **                                                                              **
  897. ; ****************************************************************************
  898.  
  899. ;
  900. ; extern TQ3ViewHintsObject Q3ViewHints_New(TQ3ViewObject view)
  901. ;
  902.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  903.         IMPORT_CFM_FUNCTION Q3ViewHints_New
  904.     ENDIF
  905.  
  906. ;
  907. ; extern TQ3Status Q3ViewHints_SetRenderer(TQ3ViewHintsObject viewHints, TQ3RendererObject renderer)
  908. ;
  909.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  910.         IMPORT_CFM_FUNCTION Q3ViewHints_SetRenderer
  911.     ENDIF
  912.  
  913. ;
  914. ; extern TQ3Status Q3ViewHints_GetRenderer(TQ3ViewHintsObject viewHints, TQ3RendererObject *renderer)
  915. ;
  916.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  917.         IMPORT_CFM_FUNCTION Q3ViewHints_GetRenderer
  918.     ENDIF
  919.  
  920. ;
  921. ; extern TQ3Status Q3ViewHints_SetCamera(TQ3ViewHintsObject viewHints, TQ3CameraObject camera)
  922. ;
  923.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  924.         IMPORT_CFM_FUNCTION Q3ViewHints_SetCamera
  925.     ENDIF
  926.  
  927. ;
  928. ; extern TQ3Status Q3ViewHints_GetCamera(TQ3ViewHintsObject viewHints, TQ3CameraObject *camera)
  929. ;
  930.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  931.         IMPORT_CFM_FUNCTION Q3ViewHints_GetCamera
  932.     ENDIF
  933.  
  934. ;
  935. ; extern TQ3Status Q3ViewHints_SetLightGroup(TQ3ViewHintsObject viewHints, TQ3GroupObject lightGroup)
  936. ;
  937.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  938.         IMPORT_CFM_FUNCTION Q3ViewHints_SetLightGroup
  939.     ENDIF
  940.  
  941. ;
  942. ; extern TQ3Status Q3ViewHints_GetLightGroup(TQ3ViewHintsObject viewHints, TQ3GroupObject *lightGroup)
  943. ;
  944.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  945.         IMPORT_CFM_FUNCTION Q3ViewHints_GetLightGroup
  946.     ENDIF
  947.  
  948. ;
  949. ; extern TQ3Status Q3ViewHints_SetAttributeSet(TQ3ViewHintsObject viewHints, TQ3AttributeSet attributeSet)
  950. ;
  951.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  952.         IMPORT_CFM_FUNCTION Q3ViewHints_SetAttributeSet
  953.     ENDIF
  954.  
  955. ;
  956. ; extern TQ3Status Q3ViewHints_GetAttributeSet(TQ3ViewHintsObject viewHints, TQ3AttributeSet *attributeSet)
  957. ;
  958.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  959.         IMPORT_CFM_FUNCTION Q3ViewHints_GetAttributeSet
  960.     ENDIF
  961.  
  962. ;
  963. ; extern TQ3Status Q3ViewHints_SetDimensionsState(TQ3ViewHintsObject viewHints, TQ3Boolean isValid)
  964. ;
  965.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  966.         IMPORT_CFM_FUNCTION Q3ViewHints_SetDimensionsState
  967.     ENDIF
  968.  
  969. ;
  970. ; extern TQ3Status Q3ViewHints_GetDimensionsState(TQ3ViewHintsObject viewHints, TQ3Boolean *isValid)
  971. ;
  972.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  973.         IMPORT_CFM_FUNCTION Q3ViewHints_GetDimensionsState
  974.     ENDIF
  975.  
  976. ;
  977. ; extern TQ3Status Q3ViewHints_SetDimensions(TQ3ViewHintsObject viewHints, unsigned long width, unsigned long height)
  978. ;
  979.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  980.         IMPORT_CFM_FUNCTION Q3ViewHints_SetDimensions
  981.     ENDIF
  982.  
  983. ;
  984. ; extern TQ3Status Q3ViewHints_GetDimensions(TQ3ViewHintsObject viewHints, unsigned long *width, unsigned long *height)
  985. ;
  986.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  987.         IMPORT_CFM_FUNCTION Q3ViewHints_GetDimensions
  988.     ENDIF
  989.  
  990. ;
  991. ; extern TQ3Status Q3ViewHints_SetMaskState(TQ3ViewHintsObject viewHints, TQ3Boolean isValid)
  992. ;
  993.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  994.         IMPORT_CFM_FUNCTION Q3ViewHints_SetMaskState
  995.     ENDIF
  996.  
  997. ;
  998. ; extern TQ3Status Q3ViewHints_GetMaskState(TQ3ViewHintsObject viewHints, TQ3Boolean *isValid)
  999. ;
  1000.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1001.         IMPORT_CFM_FUNCTION Q3ViewHints_GetMaskState
  1002.     ENDIF
  1003.  
  1004. ;
  1005. ; extern TQ3Status Q3ViewHints_SetMask(TQ3ViewHintsObject viewHints, const TQ3Bitmap *mask)
  1006. ;
  1007.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1008.         IMPORT_CFM_FUNCTION Q3ViewHints_SetMask
  1009.     ENDIF
  1010.  
  1011. ;
  1012. ; extern TQ3Status Q3ViewHints_GetMask(TQ3ViewHintsObject viewHints, TQ3Bitmap *mask)
  1013. ;
  1014.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1015.         IMPORT_CFM_FUNCTION Q3ViewHints_GetMask
  1016.     ENDIF
  1017.  
  1018. ;  Call Q3Bitmap_Empty when done with the mask    
  1019. ;
  1020. ; extern TQ3Status Q3ViewHints_SetClearImageMethod(TQ3ViewHintsObject viewHints, TQ3DrawContextClearImageMethod clearMethod)
  1021. ;
  1022.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1023.         IMPORT_CFM_FUNCTION Q3ViewHints_SetClearImageMethod
  1024.     ENDIF
  1025.  
  1026. ;
  1027. ; extern TQ3Status Q3ViewHints_GetClearImageMethod(TQ3ViewHintsObject viewHints, TQ3DrawContextClearImageMethod *clearMethod)
  1028. ;
  1029.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1030.         IMPORT_CFM_FUNCTION Q3ViewHints_GetClearImageMethod
  1031.     ENDIF
  1032.  
  1033. ;
  1034. ; extern TQ3Status Q3ViewHints_SetClearImageColor(TQ3ViewHintsObject viewHints, const TQ3ColorARGB *color)
  1035. ;
  1036.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1037.         IMPORT_CFM_FUNCTION Q3ViewHints_SetClearImageColor
  1038.     ENDIF
  1039.  
  1040. ;
  1041. ; extern TQ3Status Q3ViewHints_GetClearImageColor(TQ3ViewHintsObject viewHints, TQ3ColorARGB *color)
  1042. ;
  1043.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1044.         IMPORT_CFM_FUNCTION Q3ViewHints_GetClearImageColor
  1045.     ENDIF
  1046.  
  1047.  
  1048.  
  1049.     ENDIF ; __QD3DIO__ 
  1050.  
  1051.